home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 3: Developer Tools / Linux Cubed Series 3 - Developer Tools.iso / devel / make / icmake-6.000 / icmake-6 / icmake / comp / smaller.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-08  |  972 b   |  40 lines

  1. /*
  2.                             S M A L L E R . C
  3. */
  4.  
  5. #include "iccomp.h"
  6.  
  7. ESTRUC_ *smaller (lval, rval)
  8.     ESTRUC_
  9.         *lval,
  10.         *rval;
  11. {
  12.     btoi(lval);                             /* convert boolean to i */
  13.     btoi(rval);
  14.  
  15.     if (conflict(lval, rval, op_sm))        /* test type conflict */
  16.         return(lval);
  17.  
  18.     if ((lval->type & rval->type & ~ALLTYPES) == e_const)
  19.     {
  20.         if (test_type(lval, e_int))
  21.             lval->evalue = (lval->evalue < rval->evalue);
  22.         else
  23.         {
  24.             lval->evalue =
  25.                       (
  26.                         strcmp
  27.                         (
  28.                             stringtab[lval->evalue].string,
  29.                             stringtab[rval->evalue].string
  30.                         )
  31.                       ) < 0;
  32.             set_type(lval, e_int | e_const);
  33.         }
  34.     }
  35.     else
  36.         defcode(lval, rval, op_sm);
  37.  
  38.     return (lval);                          /* return new expression */
  39. }
  40.